main() {
  // 空安全机制
  //  Dart 如果声明变量没有赋值, 初始值是 null
  //  注意： Dart 里面没有 undefined 类型
  // 1. 变量类型后添加 ? 表示该变量可以为空
  String? name; // 相当于鸿蒙的 String | null
  // 2. 访问变量时，需要添加 ? 表示该变量可能为空
  print(name?.length);
  // 3. 调用方法时，需要添加 ? 表示该方法可能为空
  print(name?.toUpperCase());

  // 4. 空合并运算符 ??
  // 4.1 如果变量为空, 则返回默认值，不支持用 || 运算符设置默认值
  print(name ?? '默认值');
  // 4.2 如果变量为空, 则执行后面的代码赋值
  name ??= '张三';
  print(name);

  // 5. 非空断言运算符 !
  // 5.1 断言变量不为空, 如果为空, 则抛出异常
  print(name!.length);
}
